package regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 元字符-字符匹配符
 */
public class RegExp03 {

    public static void main(String[] args) {
        /*
            符号          符号                                              示例                        解释                                             匹配输入
            []         可接收的字符列表                                     [efgn]                  匹配e f g h中的任意1字符
            [^]        不接收的字符列表                                     [^abc]                  除a b c之外的任意1字符，包括数字和特殊符号
            -          连字符                                              A-Z                     任意单个大写字母
            .          匹配除\n以外的任何字符                                a..b                    以a开头，b结尾，中间包括2个任意字符的长度为4的字符串        aaab、aefb
            \\d        匹配单个数字字符，相当于[0-9]                         \\d{3}(\\d)?             包含3个或4个数字的字符串                                123、9876
            \\D        匹配单个非数字字符，相当于[^0-9]                      \\D(\\d)*                以单个非数字字符开头，后接人一个数字字符串                 a、A342
            \\w        匹配单个数字、大小写字母字符，相当于[0-9a-zA-Z]         \\d{3}\\w{4}             以3个数字字符开头的长度为7的数字字母字符串                234abcd
            \\W        匹配单个非数字、大小写字母字符，相当于[^0-9a-zA-Z]      \\W+\\d{2}               以至少1个非数字字母字符开头，2个数字字符结尾的字符串        #29、#?@10
         */
        String content = "a11c8abc_ABCy@";

        //匹配a-z之间任意一个字符
//        String regStr = "[a-z]";
        //匹配A-Z之间任意一个字符
//        String regStr = "[A-Z]";
        //匹配abc字符串[默认区分大小写]
//        String regStr = "abc";
        //匹配abc字符串[不区分大小写]
//        String regStr = "(?i)abc";
        //匹配0-9之间任意一个字符
//        String regStr = "[0-9]";
        //匹配不在 a-z之间任意一个字符
//        String regStr = "[^a-z]";
        //匹配不在 0-9之间任意一个字符
//        String regStr = "[^0-9]";
        //匹配 在 abcd 中任意一个字符
//        String regStr = "[abcd]";
        //匹配不在 0-9 的任意一个字符
//        String regStr = "\\D";
        //匹配 大小写英文字母, 数字，下划线
//        String regStr = "\\w";
        //匹配 等价于 [^a-zA-Z0-9]
//        String regStr = "\\W";
        //匹配任何空白字符
//        String regStr = "\\s";
        //匹配任何非空白字符，和\\s相反
//        String regStr = "\\S";
        //. 匹配出 \n 之外的所有字符,如果要匹配.本身则需要使用 \\.
        String regStr = ".";
        //当创建Pattern 对象时，指定 Pattern.CASE_INSENSITIVE, 表示匹配是不区分字母大小写.
        Pattern pattern = Pattern.compile(regStr/*, Pattern.CASE_INSENSITIVE*/);
        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {
            System.out.println("找到: " + matcher.group(0));
        }
    }
}
